package com.unionfetch.content_home.contract

import com.unionfetch.content_home.bean.request.FirstStepRequest
import com.unionfetch.content_home.bean.request.SecondStepRequest
import com.unionfetch.content_home.bean.request.ThirdStepIbRequest
import com.unionfetch.content_home.bean.request.ThirdStepRequest
import com.unionftech.common.base.mvp.IBasePresenter
import com.unionftech.common.base.mvp.IBaseView
import com.unionftech.common.base.mvp.impl.IBaseCallBack
import com.unionftech.common.bean.ResponseResult

interface OpenAccountContract {
    interface IFirstStepView : IBaseView {
        fun handleFirstStep(response: ResponseResult<Any?>)
    }

    interface ISecondStepView : IBaseView {
        fun handleSecondStep(response: ResponseResult<Any?>)
    }

    interface IThirdStepView : IBaseView {
        fun handleThirdStep(response: ResponseResult<Any?>)
    }

    interface IOpenAccountPresenter : IBasePresenter {
        fun submitFirstStep(token: String, request: FirstStepRequest)
        fun submitSecondStep(token: String, request: SecondStepRequest)
        fun submitRCThirdStep(token: String, request: ThirdStepRequest)
        fun submitIBThirdStep(token: String, request: ThirdStepIbRequest)
    }

    interface IOpenAccountModel {
        fun handleFirstStep(
            token: String, request: FirstStepRequest, callBack: IBaseCallBack<ResponseResult<Any?>>
        )

        fun handleSecondStep(
            token: String, request: SecondStepRequest, callBack: IBaseCallBack<ResponseResult<Any?>>
        )

        fun handleRCThirdStep(
            token: String, request: ThirdStepRequest, callBack: IBaseCallBack<ResponseResult<Any?>>
        )

        fun handleIBThirdStep(
            token: String,
            request: ThirdStepIbRequest,
            callBack: IBaseCallBack<ResponseResult<Any?>>
        )
    }
}